package com.sayno.wrench.dynamic.config.center.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @description:  动态配置中心注册的自动配置属性类。
 * @author: Administrator
 * @createTime: 2025/5/13 22:22
 */
@ConfigurationProperties(prefix = "sayno.wrench.config.register", ignoreUnknownFields = true)
public class DynamicConfigCenterRegisterAutoConfigProperties {

    /**
     * 配置中心的主机地址，例如：127.0.0.1
     */
    private String host;

    /**
     * 配置中心的端口号，例如：6379
     */
    private int port;

    /**
     * 访问配置中心所需的密码，如果无密码可为空。
     */
    private String password;

    /**
     * 连接池的最大连接数，默认值为 64。
     */
    private int poolSize = 64;

    /**
     * 连接池中保持的最小空闲连接数，默认值为 10。
     */
    private int minIdleSize = 10;

    /**
     * 空闲连接的超时时间（毫秒），超时连接将被关闭，默认值为 10000 毫秒。
     */
    private int idleTimeout = 10000;

    /**
     * 获取连接的最大等待时间（毫秒），默认值为 10000 毫秒。
     */
    private int connectionTimeout = 10000;

    /**
     * 最大重试次数（连接失败时），默认值为 3。
     */
    private int retryAttempts = 3;

    /**
     * 每次重试之间的时间间隔（毫秒），默认值为 1000 毫秒。
     */
    private int retryInterval = 1000;

    /**
     * 向服务器发送心跳的间隔时间（毫秒），0 表示不启用心跳机制。
     */
    private int pingInterval = 0;

    /**
     * 是否保持长连接，true 表示开启长连接，默认启用。
     */
    private boolean keepAlive = true;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getPoolSize() {
        return poolSize;
    }

    public void setPoolSize(int poolSize) {
        this.poolSize = poolSize;
    }

    public int getMinIdleSize() {
        return minIdleSize;
    }

    public void setMinIdleSize(int minIdleSize) {
        this.minIdleSize = minIdleSize;
    }

    public int getIdleTimeout() {
        return idleTimeout;
    }

    public void setIdleTimeout(int idleTimeout) {
        this.idleTimeout = idleTimeout;
    }

    public int getConnectionTimeout() {
        return connectionTimeout;
    }

    public void setConnectionTimeout(int connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    public int getRetryAttempts() {
        return retryAttempts;
    }

    public void setRetryAttempts(int retryAttempts) {
        this.retryAttempts = retryAttempts;
    }

    public int getRetryInterval() {
        return retryInterval;
    }

    public void setRetryInterval(int retryInterval) {
        this.retryInterval = retryInterval;
    }

    public int getPingInterval() {
        return pingInterval;
    }

    public void setPingInterval(int pingInterval) {
        this.pingInterval = pingInterval;
    }

    public boolean isKeepAlive() {
        return keepAlive;
    }

    public void setKeepAlive(boolean keepAlive) {
        this.keepAlive = keepAlive;
    }
}
